![]() |
Программирование для Internet |
||
|
Несколько человек собрались вместе в некотором замкнутом помещении. Каждый из них имеет определенные отношения с остальными. Кто-то с кем-то дружит, кто-то нет. Неминуемо начнут образовываться группы. Какие-то люди будут преследовать других, стараясь быть поближе, какие-то будут убегать, стараясь избежать нежелательной близости. Вот такую ситуацию и моделирует данная игра.
Отношения одного человека (A) к другому (B) в этой игре задается единственным числом - расстоянием на котором A желал бы находиться от B. Разность между желаемым и действительным расстоянием называется уровнем дискомфорта. Если некий человек просуммирует все уровни дискомфорта возникающие из-за неправильных расстояний от него до всех остальных людей группы, то получится суммарный уровень дискомфорта.
На каждом шаге игры, каждый человечек, вычисляет суммарные уровни дискомфорта для клетки на которой он стоит и восьми соседних клеток. После этого, он принимает решение о переходе на клетку с минимальным уровнем дискомфорта (в случае, если минимальный уровень достигается на той клетке, где он уже стоит, то никуда переходить не надо). После того, как все человечки приняли решения, они все одновременно переходят на выбранные клетки. Затем этот процесс повторяется. Возможна ситуация, когда все человечки остановятся. Это не значит, что все они абсолютно счастливы. Просто ни одному из них, ни одна соседняя клетка, не дает меньшего дискомфорта, чем та на которой он стоит в данный момент.
Иногда возникают конфликты, например два человечка претендуют на одну и ту же клетку. Такие ситуации разрешаются в соответствие со следующими правилами:
Как пользоваться программой
Эта программа работает в Microsoft Internet Explorer 4.0 и Netscape Navigator 4.0 В последнем она несколько дольше инициализируется, зато намного быстрее работает потом.
Чтобы посмотреть заранее подготовленный пример, выберите его и нажмите Старт.
Чтобы поставить человечка на поле, нужно кликнуть его изображение в правой части экрана, а затем кликнуть клетку на которую Вы хотите его поставить. Это можно делать только в режиме редактирования, то есть, когда не запущена анимация.
В правой части таблицы записываются отношения человечков друг к другу по строкам. Например, в строке соответствующей красному человечку, пишем расстояния, на которых красный человечек желает находиться от всех остальных. Пустая клетка соответствует нулевому расстоянию .
Кнопка Старт - начинает анимацию. Кнопка Пауза позволяет приостановить анимацию, а кнопка Далее - продолжить.
Кнопка Стоп - останавливает анимацию и возвращает поле в положение, в котором оно было до нажатия кнопки Старт.
Кнопка Освежить нужна только в Netscape Navigator. Дело в том, что после изменения размера окна, он не всегда корректно перерисовывает поле.
Для чего нужна кнопка ПечатьЭта программа, лишь демонстрационный пример к лекции. Поэтому, в ней не предусмотрена возможность для пользователя, послать на сервер свою группу. Однако, если Вы хотите собирать коллекцию красивых групп, Вы можете поступить так:
Таким образом Вы можете накапливать коллекцию красивых групп и обмениваться ими с друзьями. Технология не слишком удобная, но, к сожалению, не могу предложить ничего лучшего. Это тот самый путь, которым я заносил примеры в эту страничку.
В скором времени, я планирую поставить эту игру на сервер не как пример, а просто как страничку для любителей таких игр. Там, разумеется будет возможность добавить Вашу группу в коллекцию хранящуюся на сервере для всеобщего доступа.
Главная страница | Замечания? Комментарии? Идеи? |